#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QDebug>
#include<fstream>
#include<iostream>
#include<QShortcut>
#include<QFormLayout>
#include<QButtonGroup>
#include<QLineEdit>
#include<QTimer>
#include<windows.h>
#include<QPushButton>
#include<QToolTip>
#include<QDockWidget>
#include<QDialog>
#include<QPushButton>
#include<QStatusBar>
#include<QToolBar>
#include<QPair>
#include<QCursor>
#include<QSound>
#include<QVector>
#include<QPair>
#include<QMap>
#include<QMessageBox>
#include<QColorDialog>
#include<QFileDialog>
#include<QFontDialog>
#include<QTimer>
#include<QInputDialog>
#include<QFile>
#include<QFileDevice>
#include<QWaitCondition>
#include<Qpainter>
#include<QPaintEvent>
#include<random>
#include<QLabel>
#include"plane.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    QVector<plane> Planes;
    int attack=100;
    int my_life=500;
    int my_score=0;
    int update_fre=45;   //更新画面的频率
    int bullet_num=1;   //子弹数量
    int bullet_fre=100;
    int bullet_pre=0;
    int plane_make_fre=700;
    int plane_make_pre=0;
    int my_x=800;
    int my_y=1100;
    bool start=false;   //是否开始游戏
    QLabel* label_life;
    QLabel* label_score;
    QString smallplane=":plane/smallplane.png";
    QString middleplane=":plane/middleplane.png";
    QString bigplane=":plane/bigplane.png";
    QString myplane=":plane/myplane.png";
    QString bull=":bullet/bullet.png";
    QString my_bull=":bullet/my_bullet.png";
    QLabel* game_des;   //游戏说明
    QPushButton* game_start;  //开始游戏按钮
    QMap<QPair<int,int>,bool> upgrade_source;
    QVector<bullet> My_Bullets;
    QTimer* timer_update;
public:
    void paintEvent(QPaintEvent* pe)override;
    void mouseMoveEvent(QMouseEvent* me)override;

public:
    void Paint(const QString& name,int x,int y,int w,int h,QPainter* pa,QPixmap& pm);  //封装绘制图形函数
    bool judge_gain_upgrade_source(int xr,int yr);  //判定是否获取到了强化道具
    bool judege_crash(int x1,int y1,int x2,int y2);   //判定是否碰撞了
    void makeplane(); //生成飞机
    void makebullet();  //生成子弹
    void judge_make_upgrade_source(int x,int y);
    bool judge_hit(int x,int y,QVector<plane>& Planes);
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
